<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*  //1.对象创建的普通属性是可以被直接修改 删除 枚举的
      const obj = {
        name: "张三",
        age: 20,
      };

      obj.name = "李四";
      console.log(obj);

      for (let key in obj) {
        console.log(key);
      }
      delete obj.name;
      console.log(obj); */

      //2.使用Object.defineProperty的方式给对象扩展属性,或者使用Object.create创建对象时 可以添加描述信息
      const obj = {
        name: "张三",
        age: 20,
      };
      Object.defineProperty(obj, "sex", {
        value: "男",
        writable: false, //控制当前属性是否可写
        enumerable: false, //控制当前属性是否可以被枚举
        configurable: false, //控制当前的数据是否可以被删除或者修改描述
      });
      obj.sex = "女"; //没有修改成功
      for (let key in obj) {
        console.log(key); //只有name和age属性  没有枚举出sex
      }
      delete obj.sex; //没有被删掉
      console.log(obj);
    </script>
  </body>
</html>
